class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name} is now sitting.")


my_dog = Dog('PiPi', 21)
my_dog.sit()
print(my_dog.name)
your_dog = Dog('MaoMao', 1)
print(f"your dog name is {your_dog.name} , age is {your_dog.age}")


# 练习
# 1、创建一个名为Restaurant 的类，为其方法__init__()
# 设置属性restaurant_name 和cuisine_type 。创建一个名为
# describe_restaurant() 的方法和一个名为open_restaurant() 的方
# 法，前者打印前述两项信息，而后者打印一条消息，指出餐馆正在营业。

class Restaurant:
    def __init__(self, name, type):
        self.name = name
        self.type = type

    def describe_restaurant(self):
        print(f"{self.name}'s type is {self.type}")

    def open_restaurant(self):
        print(f"{self.name} is running.")


my_restaurant = Restaurant('肯德基', '快餐')
my_restaurant.describe_restaurant()
my_restaurant.open_restaurant()


# 继承
class WhiteDog(Dog):
    def __init__(self):
        self.color = 'white'
        self.name = '狗狗'
        self.age = 21

    # 重写父类的方法
    def sit(self):
        print(f"{self.color} {self.name} is now sitting")


white_dog = WhiteDog()
white_dog.sit()


class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def describe_car(self):
        print(f"车辆名称:{self.make}\t 型号：{self.model}\t 年份：{self.year}")


class ElectricCar(Car):
    def __init__(self, make='大众', model='朗逸', year='2011'):
        super().__init__(make, model, year)
        self.battery = Battery(100)

    def describe_car(self):
        super().describe_car()
        print(f"电量:{self.battery.battery_size}")


class Battery:
    def __init__(self, battery_size=75):
        self.battery_size = battery_size

    def describe_battery(self):
        print(f"当前电量 {self.battery_size}%")


tsl = ElectricCar('特斯拉', 'Model-S', '2022')
tsl.describe_car()
tsl.battery.describe_battery()

# Python标准库
import random

# 产生随机数
print(random.randint(1, 10))

# 随机选择列表中的一项
players = ['Kobe', 'LBJ', 'KD', "KG"]
print(random.choice(players))


# 练习
# 1、创建一个Die 类，它包含一个名为sides 的属性，该属性
# 的默认值为6。编写一个名为roll_die() 的方法，它打印位于1和骰子面数之
# 间的随机数。创建一个6面的骰子再掷10次

class Die:
    def __init__(self, sides=6):
        self.sides = sides

    def roll_die(self):
        print(random.randint(1, self.sides))


die = Die()
die_10 = Die(10)
die_20 = Die(20)
for i in range(1, 11):
    die_20.roll_die()

# 2、创建一个列表或元组，其中包含10个数和5个字母。从这个
# 列表或元组中随机选择4个数或字母，并打印一条消息，指出只要彩票上是这4
# 个数或字母，就中大奖了